<?php
DEFINE("NBMEMBREPARPAGE", 3);
DEFINE("NBSCANPARPAGE", 6);

Header::set_title("Administration");
Header::set_css("toolbox/site.css");


require_once(CLASSES."/Scan.class.php");
require_once(CLASSES."/Membre.class.php");
require_once(INCLUDES."/Site.class.php");
require_once(CLASSES."/Archives.class.php");
require_once(CLASSES."/Categorie.class.php");
require_once(CLASSES."/SsCategorie.class.php");

echo "<div class=\"banniere\"></div>";

echo '<div id="texte-accueil">';
// Si on est pas connecté ni admin on est redirigé
if(Session::IsOpen('membre')) {
	if(Session::Info('membre','rang') == "Administrateur") {
		echo '<a href="?module=Admin&amp;gestion=membre">Gestion des membre</a><br />
	<a href="?module=Admin&amp;gestion=scan">Gestion des scans</a><br />
	<a href="?module=Admin&amp;gestion=scan&amp;validation">Validation des scans</a><br />
	<a href="?module=Admin&amp;gestion=dump">Sauvegarde de la base de données</a><br />
	<a href="?module=Admin&amp;gestion=import_dump">Importer une sauvegarde</a><br />
	<a href="?module=Admin&amp;gestion=bd_star">Gestion BD Stars</a><br />
	<a href="?module=Admin&amp;gestion=forum_catego">Forum : Creer une nouvelle categorie</a><br />
	<a href="?module=Admin&amp;gestion=forum_sscatego">Forum : Creer une nouvelle sous-categorie</a><br />
	';


		if(isset($_GET['gestion']) && $_GET['gestion']=='membre' && isset($_GET['changer_rang'])) changer_rang_membre();
		if(isset($_GET['gestion']) && $_GET['gestion']=='membre') traitement_membre();
		elseif(isset($_GET['gestion']) && $_GET['gestion']=='scan') traitement_scan();
		elseif(isset($_GET['gestion']) && $_GET['gestion']=='confirm_validation') confirmation_validation();
		elseif(isset($_GET['gestion']) && $_GET['gestion']=='valider_supprimer') valider_supprimer();
		elseif(isset($_GET['gestion']) && $_GET['gestion']=='dump') dump(mysql_connect('localhost','root','', 'projet'),'projet',true,true,'INSERT');
		elseif(isset($_GET['gestion']) && $_GET['gestion']=='import_dump') import_dump();
		elseif(isset($_GET['gestion']) && $_GET['gestion']=='bd_star' && isset($_GET['confirmation'])) confirmation_suppression_bd_star();
		elseif(isset($_GET['gestion']) && $_GET['gestion']=='bd_star' && isset($_GET['suppression'])) suppression_bd_star();
		elseif(isset($_GET['gestion']) && $_GET['gestion']=='bd_star') bd_star();
		elseif(isset($_GET['gestion']) && $_GET['gestion']=='forum_catego') forum_new_catego();
		elseif(isset($_GET['gestion']) && $_GET['gestion']=='forum_sscatego') forum_new_sscatego();

	} else {
		Site::message_info("Vous n'avez pas les privilèges pour accèder à cette zone du site");
		Site::redirect('index.php');
	}
} else {
	Site::message_info("Vous n'êtes pas connecté");
	Site::redirect('index.php');
}

echo "</div>";


//Changer le rang d'un membre
function changer_rang_membre() {

	if(!empty($_GET['id']) && $_GET['id'] != Session::Info('membre', 'pseudo')) {
		$membre = new Membre();
		$membre = $membre->SearchByPseudo($_GET['id']);
		
		if($membre != null) {
			
			if($membre->Get('rang') == "Administrateur") {
			$membre->ChangeField("Membre", "RANG");
			}
			else {
			$membre->ChangeField("Administrateur", "RANG");
			}
		}
	}
}


//on affiche tous les membres avec systeme de pagination
function traitement_membre() {
	$list = array();
	$list = Membre::SearchByPseudo('','%');

	
	if(isset($_GET['page'])) {
		if($_GET['page'] == 0) 
		$page = 1; 
		else $page = $_GET['page']; 
	}
	else $page = 1;
	
	
	echo '<form method="post" action="?module=Admin&amp;gestion=confirm_validation&amp;membre">
			<table>
			<tr><th></th><th>Pseudo</th>
			<th>Email</th>
			<th>Rang</th>
			<th>Date</th>
			<th></th></tr>
		';
	$i=($page-1)*NBMEMBREPARPAGE;
	$arret = (NBMEMBREPARPAGE*$page)-1;
	
	if($arret >= sizeof($list)) $arret = sizeof($list)-1;
	for($i;$i<=$arret;$i++) {
		echo '<tr>';
		echo '<td><input type="checkbox" name="id[]" value="'.$list[$i]['pseudo_membre'].'" /></td>';
		echo '<td>'.$list[$i]['pseudo_membre'].'</td>';
		echo '<td>'.$list[$i]['email_membre'].'</td>';
		echo '<td>'.$list[$i]['rang_membre'].'</td>';
		echo '<td>'.date("d-m-Y",$list[$i]['date_membre']).'</td>';
		echo '<td>';
		if($list[$i]['rang_membre'] == "Administrateur")
			echo '<a href="?module=Admin&gestion=membre&changer_rang&id='.$list[$i]['pseudo_membre'].'" />Changer en membre</a>';
		else
			echo '<a href="?module=Admin&gestion=membre&changer_rang&id='.$list[$i]['pseudo_membre'].'" />Changer en administrateur</a>';
			
		echo '</td>';
		
		//echo '<td>'. .'<a href="" />Changer en membre</a>'. else .'<a href="">Changer en administrateur</a></td>';
		//echo '<td><div id='.$i.' style=\'display:none\'>Nouveau Rang : lol<input type="text" name="new_nom" /></div></td>';
	}
	
	
	echo '</table>';
	echo '<input type="submit" value="Supprimer" name="Supprimer"/>
			<input type="hidden" value="'.$_SERVER['QUERY_STRING'].'" name="urlprec" />
			<br /><br />Page ';
	if($arret+1 <=  sizeof($list)) {
		for($i=0;$i<ceil(sizeof($list)/NBMEMBREPARPAGE);$i++) {
			if($page-1 == $i) echo ($i+1)."&nbsp;";
			else echo "<a href=\"?module=Admin&amp;gestion=membre&amp;page=".($i+1)."\">".($i+1)."</a>&nbsp;";
		}
	}

}
function traitement_scan() {
	$list = array();
	
	if(isset($_GET['validation'])) $list = Scan::SearchByScan('','%',0);
	else $list = Scan::SearchByScan('','%');

	
	if(isset($_GET['page'])) {
		if($_GET['page'] == 0) 
		$page = 1; 
		else $page = $_GET['page']; 
	}
	else $page = 1;
	
	if(isset($_GET['validation'])) $validation="&amp;validation";
	else $validation="";
	echo '<form method="post" action="?module=Admin&gestion=confirm_validation'.$validation.'&amp;scan">
			<table>
			<tr>
			<th></th>
			<th>Nom Série</th>
			<th>Nom Tome</th>
			<th>N° Série</th>
			<th>Date</th>
			<th>Uploader</th>	
			<th>Genre</th>
			<th>Type</th>
			<th>Download</th>
			<th>Voir</th>
			</tr>
		';
	$i=($page-1)*NBSCANPARPAGE;
	$arret = (NBSCANPARPAGE*$page)-1;
	
	if($arret >= sizeof($list)) $arret = sizeof($list)-1;
	for($i;$i<=$arret;$i++) {
		echo '<tr>';
		echo '<td><input type="checkbox" name="id[]" value="'.$list[$i]['id_scan'].'" /></td>';
		echo '<td>'.$list[$i]['nomSerie_scan'].'</td>';
		echo '<td>'.$list[$i]['nomTome_scan'].'</td>';
		echo '<td>'.$list[$i]['numeroTome_scan'].'</td>';
		echo '<td>'.date("d-m-Y",$list[$i]['dateUpload_scan']).'</td>';
		echo '<td>'.$list[$i]['uploader_scan'].'</td>';
		echo '<td>'.$list[$i]['genre_scan'].'</td>';
		echo '<td>'.$list[$i]['type_scan'].'</td>';
		echo '<td>'.$list[$i]['download_scan'].'</td>';
		if(isset($_GET['validation'])) echo '<td><a href="?module=scan&details='.$list[$i]['nomSerie_scan'].'&validation">Lien</a></td></tr>';
		else echo '<td><a href="?module=scan&details='.$list[$i]['nomSerie_scan'].'">Lien</a></td></tr>';
		
	}
	echo '</table>';
	if(isset($_GET['validation']) && $arret >= 0) echo '<input type="submit" value="Valider" name="Valider" />';
	if($arret >=0 ) echo '<input type="submit" value="Supprimer" name="Supprimer"/>
			
			<input type="hidden" value="'.$_SERVER['QUERY_STRING'].'" name="urlprec" />
			</form><br /><br />';
			
			if(ceil(sizeof($list)/NBSCANPARPAGE) > 0) echo 'Page ';
	
	
	if($arret+1 <=  sizeof($list)) {
		for($i=0;$i<ceil(sizeof($list)/NBSCANPARPAGE);$i++) {
			if($page-1 == $i) echo ($i+1)."&nbsp;";
			else {
				if(isset($_GET['validation'])) echo "<a href=\"?module=Admin&gestion=scan&page=".($i+1)."&validation\">".($i+1)."</a>&nbsp;";
				else echo "<a href=\"?module=Admin&gestion=scan&page=".($i+1)."\">".($i+1)."</a>&nbsp;";
				
			}
		}
	}
}

//Confirmation validation d'un scan
function confirmation_validation() {
if(!empty($_POST)) {

	if(isset($_REQUEST['Valider'])) {
		echo "<br />Veuillez confirmer la validation des scans suivants :<br />";
		echo '<form method="post" action="?module=Admin&gestion=valider_supprimer&validation&scan">';
	}
	else {
		if(isset($_GET['scan'])) {
			echo "Veuillez confirmer la suppression des scans suivants :<br />";
			echo '<form method="post" action="?module=Admin&gestion=valider_supprimer&scan&supprimer">';
		}else {
			echo "Veuillez confirmer la suppression des membres suivants :<br />";
			echo '<form method="post" action="?module=Admin&gestion=valider_supprimer&membre">';
		}
	}
	
	
	
	foreach($_POST['id'] as $checkbox) {
		echo '<input type="hidden" name=id[] value='.$checkbox .'>';
		if(isset($_GET['scan'])) {
			$scan = new Scan();
			$scan = $scan->SearchByScan($checkbox, '', 0,1);
			if($scan == null) {
				$scan = new Scan();
				$scan = $scan->SearchByScan($checkbox, '', 1,1); //si on demande la suppression d'un scan déjà validé
			}
			echo $scan->Get('nomSerie')."<br />";
		}
		else {
			$membre = new Membre();
			$membre = $membre->SearchByPseudo($checkbox);
			echo $membre->Get('pseudo')."<br />";
		}
	}
	
	
	if(isset($_GET['scan'])) {
		if(isset($_REQUEST['Valider'])) echo "<input type='hidden' value='module=Admin&gestion=scan&validation' name='urlprec' />";
		else echo "<input type='hidden' value='module=Admin&gestion=scan' name='urlprec' />";
	}
	if(isset($_GET['membre'])) echo "<input type='hidden' value='module=Admin&gestion=membre' name='urlprec' />";
	
	if(isset($_REQUEST['Valider'])) echo "<input type='Submit' name='Valider' value='Oui' />";
	else echo "<input type='Submit' name='Supprimer' value='Oui' />";
	echo "<input type='Submit' name='Non' value='Non' />";
	echo "</form>";
	}
}


//Valide/Supprime les scans qui ont été cochés
function valider_supprimer() {

	if (isset($_POST['Non'])) Site::redirect("?".html_entity_decode(Form::get('urlprec')));
	
	if(isset($_POST['Valider'])) {
		
		
		foreach ($_POST['id'] as $checkbox) {
			
			$scan = new Scan();
			$scan = $scan->SearchByScan($checkbox, '', 0,1);
			
			//on créer un .zip et si il n'existe pas
			if(!file_exists($scan->Get('lien').$scan->Get('nomSerie')."-".$scan->Get('nomTome').".zip")) Archives::CreateZip($scan->Get('nomSerie')."-".$scan->Get('nomTome'),$scan->Get('lien'));

			$scan->ChangeField("VALIDATION");
			$scan->Save();
		}
		Site::message_info("Scan(s) validé(s)");
		
	}
	elseif(isset($_POST['Supprimer'])) {
		if(isset($_GET['scan'])) {
			foreach ($_POST['id'] as $checkbox) {
				$scan = new Scan();
				echo $checkbox;
				$scan = Scan::SearchByScan($checkbox, '', 0,1);
				if($scan == null) $scan = Scan::SearchByScan($checkbox, '', 1,1); //si on veut supprimer un scan déjà validé 
				
				$scan->Delete();
			}
			Site::message_info("Scan(s) supprimé(s)");
		}
		else {

			foreach ($_POST['id'] as $checkbox) {
				$user = new Membre();				
				$user = $user->SearchByPseudo($checkbox);
				$user->Delete($checkbox);
			}
			Site::message_info("Membre(s) supprimé(s)");
		}
			
	}
	Site::redirect('?'.html_entity_decode(Form::get('urlprec')));
}

/* Parametres :      
*    $link : lien vers la base de donnees     
*    $db_name : nom de la base de donnees     
*    $structure : true => sauvegarde de la structure des tables     
*    $donnees : true => sauvegarde des donnes des tables     
*    $format : format des donnees ('INSERT' => des clauses SQL INSERT,)   */ 

function dump($link,$db_name,$structure,$donnees,$format,$insertComplet=""){ 
	if (!is_resource($link))       
	return false;    
	mysql_select_db($db_name);        
	$format = strtoupper($format);   
	//on supprime l'ancien backup
	$dirname = 'toolbox/sauvegarde_sql/';
	$dir = opendir($dirname); 

	while($file = readdir($dir)) {
		if($file != '.' && $file != '..' && !is_dir($dirname.$file))
		{
			unlink($dirname.$file);
		}
	}

	closedir($dir);

	$filename = "toolbox/sauvegarde_sql/backup_".$db_name."_".date("Y_m_d_H_i").".sql";    
	$fp = fopen($filename,"w");    
	if (!is_resource($fp))       
	return false;        // liste des tables    

	mysql_select_db('projet');
	$res = mysql_query( 'SHOW TABLES' );
	$num_rows = mysql_num_rows($res);    $i = 0;    
	while ($i < $num_rows)  {       
		$tablename = mysql_tablename($res, $i);       
		if ($structure === true) {          
			fwrite($fp,"DROP TABLE IF EXISTS `$tablename`;\n");          // requete de creation de la table          
			$query = "SHOW CREATE TABLE $tablename";         
			$resCreate = mysql_query($query);          
			$row = mysql_fetch_array($resCreate);          
			$schema = $row[1].";";          
			fwrite($fp,"$schema\n\n");          }       
		if ($donnees === true)          {          // les données de la table          
			$query = "SELECT * FROM $tablename";         
			$resData = mysql_query($query);         
			if (mysql_num_rows($resData) > 0)     {
				$sFieldnames = "";            
				if ($insertComplet === true)                { 
					$num_fields = mysql_num_fields($resData);          
					for($j=0; $j < $num_fields; $j++)                   {   
						$sFieldnames .= "`".mysql_field_name($resData, $j)."`,";                   }    
					$sFieldnames = "(".substr($sFieldnames,0,-1).")";                }            
				$sInsert = "INSERT INTO `$tablename` $sFieldnames values ";                    
				while($rowdata = mysql_fetch_assoc($resData))                {              
					$lesDonnees = "<guillemet>".implode("<guillemet>,<guillemet>",$rowdata)."<guillemet>";        
					$lesDonnees = str_replace("<guillemet>","'",addslashes($lesDonnees));                             
					if ($format == "INSERT")                   {                 
						$lesDonnees = "$sInsert($lesDonnees);";                   }      
					fwrite($fp,"$lesDonnees\n");                }             }          }    
		$i++;       }      
	fclose($fp); 
	Site::message_info("Sauvegarde effectuée");
} 

function import_dump() {
	$dirname = 'toolbox/sauvegarde_sql/';
	$dir = opendir($dirname); 

	while($file = readdir($dir)) {
		if($file != '.' && $file != '..' && !is_dir($dirname.$file))
		{
			DB::sql(file_get_contents($dirname.$file));
		}
	}
	
}

function confirmation_suppression_bd_star()
{
	echo "<br />Acceptez-vous d'enlever ces scans des scan stars ?<br />";
	echo '<form method="post" action="?module=Admin&gestion=bd_star&amp;suppression">';
	
	if(isset($_POST['Supprimer'])) {
			
		foreach($_POST['id'] as $checkbox) 	{
			$scan = new scan();
			$scan = $scan->SearchByScan($checkbox, '', 1, 1);
			echo '<input type="hidden" name="id[]" value="'.$checkbox.'" />';
			echo $scan->Get('nomSerie')." - ".$scan->Get('nomTome');
			
		}
		
			
	
	}
	
	echo '<input type="submit" value="Oui" name="Oui"/>';
	echo '<input type="submit" value="Non" name="Non"/></form>';
	
}

function suppression_bd_star()
{
	if(isset($_REQUEST['Oui'])) {
	foreach($_POST['id'] as $checkbox) 
		Scan::RemoveScanStar($checkbox);
	}
	
	Site::redirect("?module=Admin&amp;gestion=bd_star");

}

function bd_star() {
	if(!empty($_GET['id']) || isset($_POST['Supprimer'])) {
		if(isset($_GET['ajouter'])) 
			Scan::AddScanStar($_GET['id']);
		/*else {
			if(isset($_POST['Supprimer'])){
				foreach($_POST['id'] as $checkbox) 
					Scan::RemoveScanStar($checkbox);
			}
			else
				Scan::RemoveScanStar($_GET['id']);
			}*/
	}
	
	echo '<form method="post" action="?module=Admin&gestion=bd_star&confirmation">
			<table>
			<tr>
			<th></th>
			<th>Nom Série</th>
			<th>Nom Tome</th>
			<th>N° Série</th>
			<th>Voir</th>
			</tr>
			
			';
			$array=array();
			$array=DB::SqlToArray("SELECT id_scan_star FROM scan_star");
			
			for($i=0;$i<sizeof($array);$i++) {
			$scan = new scan();
			$scan = $scan->SearchByScan($array[$i]['id_scan_star'], '', 1, 1);
			
			echo '<tr>';
			echo '<td><input type="checkbox" name="id[]" value="'.$scan->Get('id').'" /></td>';
			echo '<td>'.$scan->Get('nomSerie').'</td>';
			echo '<td>'.$scan->Get('nomTome').'</td>';
			echo '<td>'.$scan->Get('numeroTome').'</td>';
			echo '<td><a href="?module=scan&details='.$scan->Get('nomSerie').'">Lien</a></td></tr>';
			
			}
			
			echo '</table><input type="submit" value="Supprimer" name="Supprimer"/></form><br /><br />';
			
}

# Créer une nouvelle catégorie
function forum_new_catego()
{		
		if(isset($_GET['valid']))		// On verifie si le formulaire n'a pas déjà été rempli
		{
			$nom=$_POST['nomCatego'];
			
			if(!Categorie::TestExistCatego($nom))
			{				
				$catego = new Categorie();
				$catego->Create($nom);
				
				$catego->Save();
				echo "<br />All right ! La categorie a ete cree avec succes ! <br />";
				echo "<a href=\"?module=Admin&amp;gestion=forum_catego\">-> Retour a la gestion des categories</a>";
			}
			else
			{
				echo "<br />Cette categorie existe deja. <br />";
				echo "<a href=\"?module=Admin&amp;gestion=forum_catego\">-> Retour a la gestion des categories</a>";
			}
			
		}
		else
		{	
			echo "<br />LISTE DES CATEGORIES DU FORUM <br />";
			$listeCatego=Categorie::ListeCatego();
			foreach($listeCatego as $catego)
			{
				echo "++ <a href=\"?module=forum&amp;catego=".$catego["id_categorie"]."\">".$catego["nom_categorie"]." </a> <br />";
			}
			echo "<br />";
			include 'formulaire-catego.php';
		}
}	

# Créer une nouvelle sous-catégorie ou modifier celles déjà existantes (suppression uniquement)
function forum_new_sscatego()
{
		if(isset($_GET['valid']))		// On verifie si le formulaire n'a pas déjà été rempli
		{
			$nom=$_POST['nomSsCatego']; $idCatego=$_POST['idCatego'];
			
			if(!SsCategorie::TestExistSsCatego($nom, $idCatego))
			{				
				$sscatego = new SsCategorie();
				$sscatego->Create($nom, $idCatego);
				
				$sscatego->Save();
				echo "<br />All right ! La sous-categorie a ete cree avec succes ! <br />";
				echo "<a href=\"?module=Admin&amp;gestion=forum_sscatego\">-> Retour a la gestion des categories</a>";
			}
			else
			{
				echo "<br />Cette sous-categorie existe deja. <br />";
				echo "<a href=\"?module=Admin&amp;gestion=forum_sscatego\">-> Retour a la gestion des categories</a>";
			}
			
		}
		else
		{	
			echo "<br />LISTE DES SOUS-CATEGORIES DU FORUM <br />";
			
			$ListeCatego = Categorie::ListeCatego();
			foreach($ListeCatego as $catego)
			{
				echo "++ <a href=\"?module=forum&amp;catego=".$catego["id_categorie"]."\">".$catego["nom_categorie"]." </a> <br />";
				
				$ListeSsCatego = Categorie::ListeSsCatego($catego["id_categorie"]);
				foreach($ListeSsCatego as $sscatego)
				{
					echo "+ <a href=\"?module=forum&amp;sscatego=".$sscatego["id_sscategorie"]."\">".$sscatego["nom_sscategorie"]." </a> <br />";
				}
				
				echo "<br />";
			}			
			include 'formulaire-sscatego.php';
		}
	
}


?>
